package interview.differentialArray;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 监考 https://blog.codefun2000.com/company/hw/23-4-19/P1195.html
 * 当只监督一个考场时，每监视一分钟收费3金币；同时监视两个以上的考场，每监视一分钟收费4金币；
 * 当处于两个监考任务之间的空隙之间时，塔子哥会进入待机状态，每分钟消耗1金币。问监考n场考试能获取多少金币
 */
public class InvigilateTest {

    /**
     * 思路：差分数组。考试时间数据范围为[0,10^6]，故直接定义一个数组，每个位置表示当前有几场考试，初始全为0，故其差分数组也全为0
     * 扫描所有区间，每扫描一个区间则对差分数组对应区间进行加1操作。并在此过程中统计最早开始时间min与最晚结束时间max
     * 从min到max依次遍历差分数组计算出实际值 if(i != 0) diff[i] = diff[i] + diff[i-1];根据规则统计金币数
     */
    static int[] diff = new int[1000006];
    public static void main(String[] args) throws IOException {
        //由于要读取的行数过多，故使用快读避免超时
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());
        int min=Integer.MAX_VALUE, max=0;
        for (int i = 0;i < n;i++) {
            String[] s = reader.readLine().split(" ");
            int start = Integer.parseInt(s[0]);
            int end = Integer.parseInt(s[1]);
            diff[start]++;diff[end+1]--;//将加的数传递到end，由于end+1事先减去了这个值，因此传递到end+1就结束了
            min = Math.min(min, start);
            max = Math.max(max, end);
        }
        long sum = 0;
        for (int i = min;i <= max;i++) {
            if (i != 0) diff[i] = diff[i] + diff[i-1];
            if (diff[i] == 0) sum += 1;
            else if (diff[i] == 1) sum += 3;
            else if (diff[i] > 1) sum += 4;
        }
        System.out.println(sum);
    }
}
